package com.egoo.ticket.server.service;

import com.alibaba.fastjson.JSONArray;
import com.egoo.ticket.server.pojo.dto.PageOutputDto;
import com.egoo.ticket.server.pojo.dto.WorkOrderFilterMenuInputDto;
import com.egoo.ticket.server.pojo.entity.WorkOrderFilterMenu;
import com.egoo.ticket.server.pojo.vo.ConditionVo;
import com.egoo.ticket.server.utils.common.DbResponse;

import java.util.List;

/**
 * @author Administrator
 */
public interface WorkOrderFilterMenuService {
	/**
	 * TODO:获取过滤器菜单分页
	 * @param currentPage
	 * @param pageSize
	 * @param tenantId
	 * @return
	 */
	PageOutputDto selectAll(Integer currentPage, Integer pageSize, String tenantId);

	/**
	 * 获取对应id的过滤器菜单
	 * @param id
	 * @return
	 */
	WorkOrderFilterMenu selectById(Integer id,String tenantId);

	/**
	 * 获取对应名称的过滤器分页
	 * @param name
	 * @param workOrderTypeId
	 * @param currentPage
	 * @param pageSize
	 * @param tenantId
	 * @return
	 */
	DbResponse selectByNameAndOrderTypeName(String name, String workOrderTypeId,
											Integer currentPage, Integer pageSize, String tenantId);

	/**
	 * 获取最大编号
	 * @param tenantId
	 * @return
	 */
	Integer selectOrderMax(String tenantId);

	/**
	 * 获取对应编号的过滤器菜单
	 * @param ordering
	 * @return
	 */
	WorkOrderFilterMenu selectByOrdering(Integer ordering,String tenantId);

	/**
	 * 获取对应名称相同的过滤器菜单
	 * @param menuName
	 * @param workOrderTypeId
	 * @return
	 */
	WorkOrderFilterMenu selectByEqualsName(String menuName, Long workOrderTypeId,String tenantId);

	/**
	 * 插入创建过滤器
	 * @param workOrderFilterMenuInputDto
	 * @return
	 */
	Integer insertMenu(WorkOrderFilterMenuInputDto workOrderFilterMenuInputDto);

	/**
	 * 批量创建
	 * @param list
	 * @return
	 */
	Integer insertByBatch(List<WorkOrderFilterMenu> list);

	/**
	 * 删除
	 * @param id
	 * @return
	 */
	Integer deleteMenu(Integer id,String tenantId);

	/**
	 * 更新使用状态
	 * @param id
	 * @param userId
	 * @param status
	 * @return
	 */
	Integer updateUseStatus(Integer id, String userId, Integer status,String tenantId);

	/**
	 * 更新过滤器内容
	 * @param workOrderFilterMenuInputDto
	 * @return
	 */
	Integer updateContent(WorkOrderFilterMenuInputDto workOrderFilterMenuInputDto);

	/**
	 * TODO
	 * @param userId
	 * @param workOrderTypeIdSrc
	 * @param workOrderTypeName
	 * @return
	 */
	DbResponse updateWorkOrderTypeByBatch(String userId, Long workOrderTypeIdSrc,
                                          String workOrderTypeName);

	/**
	 * 通过用户id和过滤器id查询
	 * @param id
	 * @param userId
	 * @param tenantId
	 * @return
	 */
	String selectByDynamic(Integer id, String userId, String tenantId);

	/**
	 * 处理过滤器过滤条件
	 * @param conditionList
	 * @return
	 */
	JSONArray handleFilterCondition(List<ConditionVo> conditionList);
}
